package lh2;

import com.thoughtworks.xstream.XStream;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import lh2.StringEncrypter.EncryptionException;

/*
 * Hacemos marshalling y unmarshalling de un mensaje.
 */



/**
 *
 * @author Vidal,Cappetta,Aiello
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws EncryptionException {
        /*
        //Hacemos en primer instancia un mensaje y le hacemos el Marshalling
        XStream xstream = new XStream();
        xstream.alias("demanda", Demanda.class);
        Demanda unademanda=new Demanda("insertar",12345,"holaa");
        //serializamos el mensaje, se guarda en xml, para enviar
        String msj_marsh_xml = xstream.toXML(unademanda);
        System.out.println(msj_marsh_xml);

        //Hacemos el Unmarshalling (objetos en distintos servers o clients)
        XStream xstream2 = new XStream();
        xstream2.alias("demanda", Demanda.class);
        Demanda demanda = (Demanda)xstream2.fromXML(msj_marsh_xml);
        System.out.println("mensaje Unmarshaleado: "+demanda.getCadena());


        //scan
        Pattern patron = Pattern.compile("a*b");
        Matcher match = patron.matcher("aaaaab");
        boolean matchea = match.matches();
        if (matchea) {
            System.out.println("si matchea");
        }else{
            System.out.println("no matchea");
        }
        */
        Registro reg1=new Registro(1,"thomas");
        Registro reg2=new Registro(2,"schwarz");
        Registro reg3=new Registro(4,"b");
        Registro reg4=new Registro(6,"e");
        Registro reg5=new Registro(19,"h");
        Registro reg6=new Registro(222,"aaaaa");
        Balde baldecito=new Balde(15);

        baldecito.agregar(reg1);
        baldecito.agregar(reg2);
        baldecito.agregar(reg3);
        baldecito.agregar(reg4);
        baldecito.agregar(reg5);
        baldecito.agregar(reg6);
        System.out.println("el 19 es: "+baldecito.recuperar(19).campo);
        List<Registro> registros=baldecito.scan("[a-d]||[g-z]");
        for (Registro reg:registros){
            System.out.println("Recuperado: "+reg.campo);
        }











        /*
         Encriptado y desencriptado con un numero
        
        //encriptado
        String stringToEncrypt = "test";
        String encryptionKey = "a 1230000000000000000000000000000000000000000000000000000000000000";
	String encryptionScheme = StringEncrypter.DESEDE_ENCRYPTION_SCHEME;
	StringEncrypter encrypter = new StringEncrypter( encryptionScheme, encryptionKey );
	String encryptedString = encrypter.encrypt( stringToEncrypt );
        System.out.println("test encriptado: "+encryptedString);

        //desencriptado
        String llaved = "a 1230000000000000000000000000000000000000000000000000000000000000";
	String esquemad = StringEncrypter.DESEDE_ENCRYPTION_SCHEME;
	StringEncrypter encrypter2 = new StringEncrypter(esquemad,llaved);
	String decryptedString = encrypter2.decrypt( encryptedString);
        System.out.println("texto desencriptado: "+decryptedString);





 */


    }
}
